
package com.trial.area.permission.service;

import java.util.List;
import java.util.UUID;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.trial.area.permission.dao.RolePermissionDao;
import com.trial.area.permission.entity.PermissionVO;
import com.trial.area.permission.entity.RolePermissionVO;
import com.trial.area.permission.entity.RoleVO;
import com.trial.area.permission.param.RolePermissionParam;

/**
 * 权限角色关系表Service实现类
 *
 * @author 朱国军
 * @version 2016年03月23日 朱国军
 */
@Service
public class RolePermissionService {
    
    @Autowired
    private RolePermissionDao rolePermissionDao;
    
    /**
     * 修改角色对应的权限
     *
     * @param roleId 角色ID
     * @param permissionListStr 权限列表字符串（“,”分隔）
     * @return
     */
    @Transactional
    public String insertRolePermission(String roleId, String permissionId) {
        if (StringUtils.isBlank(roleId)) {
            return "用户不能为空！";
        }
        
        if (StringUtils.isNotBlank(permissionId)) {
            RolePermissionVO rolePermissionVO = new RolePermissionVO();
            rolePermissionVO.setRolePermissionId(UUID.randomUUID().toString());
            rolePermissionVO.setRoleId(roleId);
            rolePermissionVO.setPermissionId(permissionId);
            rolePermissionDao.insert(rolePermissionVO);
        }

        return null;
    }

    /**
     * 修改权限对应的角色
     *
     * @param permissionId 权限ID
     * @param roleId 权限对应的角色
     * @return
     */
    @Transactional
    public String insertPermissionRole(String permissionId, String roleId) {
        if (StringUtils.isBlank(permissionId)) {
            return "权限ID不能为空！";
        }
        
        if (StringUtils.isNotBlank(roleId)) {
            RolePermissionVO rolePermissionVO = new RolePermissionVO();
            rolePermissionVO.setRolePermissionId(UUID.randomUUID().toString());
            rolePermissionVO.setRoleId(roleId);
            rolePermissionVO.setPermissionId(permissionId);
            rolePermissionDao.insert(rolePermissionVO);
        }

        return null;
    }
    
    /**
     * 根据角色权限关系ID删除权限角色关系表
     *
     * @param rolePermissionId 角色权限关系ID
     * @return 影响的数据数量
     */
    public Integer deleteById(String roleId,String permissionId){
    	return rolePermissionDao.deleteRolePermission(roleId, permissionId, null);
    }
    
    /**
     * 根据权限ID查询对应的角色列表
     *
     * @param permissionId 权限Id
     * @return 权限ID查询对应的角色列表
     */
    public List<RoleVO> queryPermissionRoleList(RolePermissionParam rolePermissionParam) {
        return rolePermissionDao.queryPermissionRoleList(rolePermissionParam);
    }

    /**
     * 根据角色ID查询对应的权限列表
     *
     * @param roleId 角色Id
     * @return 角色ID查询对应的权限列表
     */
    public List<PermissionVO> queryRolePermissionList(RolePermissionParam rolePermissionParam) {
        return rolePermissionDao.queryRolePermissionList(rolePermissionParam);
    }
}
